#include <iostream>
#include "ThreadPool.hpp"
#include <string>
#include <memory>
#include <unistd.h>
#include "Log.hpp"
#include "Task.hpp"

int main()
{

	// 获取单例的可能是多线程啊！！！
    // 程序已经加载
    LOG(DEBUG, "程序已经加载");
    sleep(3);
    threadpool_t<Task>::GetInstance();
    sleep(2);

    threadpool_t<Task>::GetInstance();
    sleep(2);

    threadpool_t<Task>::GetInstance();
    sleep(2);

    threadpool_t<Task>::GetInstance();
    sleep(2);

    threadpool_t<Task>::GetInstance()->Wait();
    sleep(2);

	// srand(time(nullptr) ^ getpid() ^ pthread_self());
	// //EnableScreen(); // 开启日志显示器打印功能
	// EnableFile();
	// std::unique_ptr<threadpool_t<Task>> tp = std::make_unique<threadpool_t<Task>>(5); // C++14新特性
	// tp->InitThreadPool();
	// tp->Start();

	// int tasknum = 10;
	// while (tasknum)
	// {
	// 	int a = rand() % 10 + 1;
	// 	usleep(1234);
	// 	int b = rand() % 5 + 1;
	// 	Task t(a, b);
	// 	LOG(INFO, "main thread push task: %s", t.DebugToString().c_str());
	// 	tp->Enqueue(t);
	// 	sleep(1);
	// 	tasknum--;
	// }

	// tp->Stop();
	// tp->Wait();

	// while(true)
	// {
	// 	LOG(DEBUG,"hello%d",3);
	// }

	// while (true)
	// {
	// 	sleep(1);
	// 	LogMessage(DEBUG, __FILE__, __LINE__, true, "hello");
	// }
	// std::unique_ptr<threadpool_t<int>> tp = std::make_unique<threadpool_t<int>>();

	// tp->InitThreadPool();
	// tp->Start();

	// sleep(2);
	// std::cout<<"work"<<std::endl;
	// tp->Enqueue(5);
	// tp->Enqueue(6);
	// tp->Enqueue(7);
	// tp->Enqueue(8);

	// sleep(2);
	// tp->Stop();
	// tp->Wait();
	return 0;
}